The present invention relates to communicating audio data in a packet switched network and, more specifically, to communicating frames of audio data between devices which are separated by a firewall and/or a network address translation device.
For many years voice telephone service was implemented over a circuit switched network commonly known as plain old telephone service (POTS) and controlled by a local telephone service provider. In such systems, the analog electrical signals representing the conversation was transmitted from each telephone handset to a switching station, and between switching stations, on a dedicated pair of copper wires.
More recently, trunk lines between switching stations have been replaced with fiber optic cables. A computing device digitizes the analog signals and formats the digitized data into frames such that multiple conversations can be transmitted simultaneously on the same fiber. At the receiving end, a computing device reforms the analog signals for transmission on copper wires. Twisted pair copper wires are still used to couple the telephone handset to the local switching station.
More recently yet, voice telephone service has been implemented over the Internet. Advances in the speed of Internet data transmissions and Internet bandwidth have made it possible for telephone conversations to be communicated using the Internet""s packet switched architecture and the TCP/IP protocol.
Software is available for use on personal computers which enable the two-way transfer of real-time voice information via an Internet data link between two personal computers, each of which includes appropriate hardware for driving a microphone and a speaker. The sending computer converts voice signals from analog format, as detected by the microphone hardware, to digital format. The software facilitates data compression down to a rate compatible with the sending computers data connection to an Internet Service Provider (ISP) and facilitates encapsulation of the digitized and compressed voice data into the TCP/IP protocol, with appropriate addressing to permit communication via the Internet.
At the receiving end, the computer and software reverse the process to recover the analog voice information for presentation to the other party via the speaker associated with the receiving computer. Additionally, gateway computers are available which couple to both the Internet and to a local telephone switching station. The gateway effectively operates to couple one caller via the Internet with another caller via a traditional telephone.
The Internet communication between the sending computer and the receiving computer occurs using the Internet addressing scheme. An Internet Protocol (IP) address comprises four numbers separated by dots. Each machine on the Internet has a unique number assigned to it which constitutes one of these four numbers. In the address the left most number has the greatest weight. By analogy this would correspond to the ZIP code in a mailing address. At times the first two numbers constitute this portion of the address indicating a network or a locale. That network is connected to the last router in the transport path. In differentiating between two computers in the same destination network only the last number field changes. In such an example the next number field identifies the destination router. When the packet bearing the destination address leaves the source router it examines the first two numbers in a matrix table to determine how many hops are the minimum to get to the destination. It then sends the packet to the next router as determined from that table and the procedure is repeated. Each router has a database table that finds the information automatically. This continues until the packet arrives at the destination computer. The separate packets that constitute a message may not travel the same path depending on traffic load. However they all reach the same destination and are assembled in their original order in a connectionless fashion.
A challenge with providing voice telephone service over the Internet is that one or both of the sending computer and the destination computer may be accessing the internet through a network address translation (NAT), or proxy, server or a firewall which may, in addition to generally blocking certain connections, include NAT functionality. A NAT server enables several computers to share a single IP address.
Typical NAT server architecture includes a private network coupling each of the computers to the NAT. The NAT server has an assigned IP address and is coupled to the Internet. In operation, a computer accessing the internet through a NAT would send a frame to the NAT server via the private network. The frame would include the destination computer IP address and the sending computer""s private network address. The NAT server in turn would send a frame on the Internet to the destination computer IP address and include the NAT server IP address as the source IP address. The NAT server maintains a table which matches the sending computer on the private network with the port number used by the NAT server communicating with the destination computer via the Internet. When a return frame is received by the NAT from the destination computer on a particular port, the NAT server utilizes the table to find the address of the original sending computer.
The problem encountered is that the data frames representing the voice conversation utilize the User Datagram Protocol; (UDP) which is an unreliable real time connectionless protocol (RTP). RTP utilizes frame formats with minimal overhead data to optimize network bandwidth, as such there is no source address field included in the frame. As such, when a NAT server receives a UDP frame on the private network for routing to an IP address via the Internet, the frame does not include the sending computer source address and therefore the NAT server cannot set up a record in the table matching the sending computer to the port number.
What is needed is a method for communicating UDP frames between two devices on a packet switched network in a configuration where at least one of the two devices is coupled to the network through a NAT.
A first aspect of the present invention is to provide a method of audio communication between a first and second client through a packet switched network, such as the Internet. The method comprises sending a set-up request from the first client to a translation device and, in turn, sending a set-up request from the translation device to the second client. Thereafter, an acknowledge set-up is sent from the second client to the translation device and, in turn, sending an acknowledge set-up from the translation device to the first client. These steps may utilize the Q.931 protocol which is an interface layer basic call control protocol recommended by the International Telephony Union (ITU) and is named ISDN User-Network Interface Layer 3 Specification for Basic Call Control.
The method further includes establishing a daisy chained connection through the translation device including the steps of establishing a first communication channel between a port on the first client and a first dynamic port on the translation device for communicating frames of audio data between the first client and the translation device and establishing a second communication channel between a port on the second client and a second dynamic port on the translation device for communicating frames of audio data between the second client and the translation device. A table is maintained in the translation device which includes data relating the first dynamic port and the second dynamic port such that audio communication data, utilizing a real time protocol (RTP) and real time control protocol (RTCP) may be transferred between the first communication channel and the second communication channel independent of source address information.
In one embodiment, the second client is located on a private network and the translation device is coupled between the Internet and the second client. As such, the second communication channel is implemented on the private network and the method further includes querying a database to determine an IP address of the translation device and a private network address of the second client.
In a second embodiment, the first client is located on a private network and the translation device is coupled between the Internet and the first client. The second client may be directly addressable on the Internet. As such, the first communication channel is implemented on a private network and the method further includes querying a data base to determine an IP address of the second client.
In a third embodiment, the first client is located on a first private network with the translation device (being a first translation device) coupled between the first client and the Internet and the second client is also located on a second private network with a second translation device being coupled between the second client and the Internet.
As such, in the method being described, the second communication channel includes the second translation device interposed between the first translation device and the second client. The step of sending a set-up request from the first translation device to the second client includes sending a set-up request from the first translation device to the second translating device and sending a set-up request from the second translation device to the second client. The step of sending the acknowledge set-up from the second client to the first translation device includes sending an acknowledge set-up from the second client to the second translation device and sending an acknowledge set-up from the second translation device to the first translation device. The step of establishing the second communication channel includes: establishing a communication channel between a port on the second client and a first dynamic port on the second translation device and establishing a communication channel between a second dynamic port on the second translation device and the second dynamic port on the first translation device.
A second aspect of the present invention is to provide a tunneling address translation (TAT) engine for maintaining a packet audio conversation between a first and second client. The translation engine comprises a first network interface for exchanging frames of audio data with the first client on a first network and a second network interface for exchanging frames of audio data with the second client on a second network. A memory maintains data related to the packet audio conversation between the first and the second device to enable the engine to forward frames from the first client on the first network to the second client on the second network and from the second client on the second network to the first client on the first network, independent of source address data. The frames of audio data are real time protocol frames.
The address translation engine may include a call set-up engine for: a) receiving a set-up request on the first network interface; b) sending a set-up request on the second network interface in response to receipt of the set-up request on the first network interface; c) receiving an acknowledge set-up on the second network interface; d) sending an acknowledge set-up on the first network interface in response to receipt of the acknowledge set-up on the second network interface; and e) writing the data to memory based on information included in the set-up request and the acknowledge set-up.
A plurality of dynamic ports may be utilized on at least one of the first and second network interfaces for maintaining a plurality of audio conversations simultaneously. As such, the memory associates, for each conversation, a port number on which audio frames are received with an IP address and port number to where such audio frames are to be forwarded.
The address translation engine may further include a look-up engine for querying a database to determine a public network address associated with a destination client of a telephone call. In the event that the destination client is itself, behind an address translation engine, the public address may include the network address of a second tunneling address translation engine and a private network address identifying the destination client of the telephone call on a private network associated with the second tunneling address translation engine.